package ecom.stateless;

import java.util.Date;
import java.util.List;

import ecom.api.IProprietaireRemote;
import ecom.entity.AnnonceChercheurEntity;
import ecom.entity.AnnonceProprietaireEntity;
import ecom.entity.ChercheurEntity;
import ecom.entity.ProprietaireEntity;
import javax.ejb.Stateless;
import javax.persistence.PersistenceContext; //
import javax.persistence.EntityManager;
import org.ow2.util.log.Log;
import org.ow2.util.log.LogFactory;
//import oracle.toplink.essentials.ejb.cmp3.EntityManager;//netbeans me propose ces imports mais je ne suis pas sur !


@Stateless(mappedName = "ecom.stateless.ProprietaireStateless@Remote", description = "Proprietaire stateless", name = "ProprietaireStateless")
public class ProprietaireStateless implements IProprietaireRemote {

	Log log = LogFactory.getLog(ChercheurStateless.class);
	@PersistenceContext
	private EntityManager em = null;
	private ProprietaireEntity myProprietaire;


	public void create(String nom, String prenom, String pseudo, String mdp, String ville, int departement, String mail, int numtel, Date naissance, String role){
		myProprietaire = new ProprietaireEntity();
		myProprietaire.setNom(nom);
		myProprietaire.setPrenom(prenom);
		myProprietaire.setVille(ville);
		myProprietaire.setPseudo(pseudo);
		myProprietaire.setMdp(mdp);
		myProprietaire.setDepartement(departement);
		myProprietaire.setMail(mail);
		myProprietaire.setNumTel(numtel);
		myProprietaire.setDateNaissance(naissance);
		myProprietaire.setRole(role);
		em.persist(myProprietaire);

	}
	public ProprietaireEntity ModifProprietaire(long idProprietaire, String nom, String prenom, String mail,
			int numTel, String mdp,  Date dateNaissance, int departement, String ville)

	{
		log.info("entre ModifChercheurModifChercheur");
		myProprietaire = em.find(ProprietaireEntity.class, idProprietaire);
		myProprietaire.setNom(nom);
		myProprietaire.setPrenom(prenom);
		myProprietaire.setMail(mail);
		myProprietaire.setNumTel(numTel);
		myProprietaire.setMdp(mdp);
		myProprietaire.setDateNaissance(dateNaissance);
		myProprietaire.setDepartement(departement);
		myProprietaire.setVille(ville);
		em.merge(myProprietaire);
		return myProprietaire;
	}


	public ProprietaireEntity SaveProprietaire(ProprietaireEntity myProprietaire) {
		em.merge(myProprietaire);
		return myProprietaire;
	}

	public List<AnnonceProprietaireEntity> findMesAnnonces(long id) {   	
		return em.createQuery("SELECT p FROM AnnonceProprietaireEntity p WHERE p.proprietaireEntityAP='"+ id +"'").getResultList();
	}

	public List<AnnonceChercheurEntity> findMesFavoris(long id) {   	
		return em.createQuery("SELECT p FROM ProprietaireEntity c JOIN c.mesFavoris p WHERE c.id = "+id).getResultList();
	}

	public ProprietaireEntity findPseudo(String pseudo){
		java.util.List <ProprietaireEntity> list = em.createQuery("SELECT p FROM ProprietaireEntity p WHERE p.myUtilisateur.myCompteEntity.pseudo='"+ pseudo +"'").getResultList();
		if(list.size() == 1) {
			ProprietaireEntity monchercheur = list.get(0);
			monchercheur.setMesAnnonces(findMesAnnonces(monchercheur.getId()));
			monchercheur.setMesFavoris(findMesFavoris(monchercheur.getId()));
			return monchercheur;
		} else 
			return null;
	}




}

